package cn.shop.cloud.common;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @program: shop-parent
 * @ClassName CommonControllerAdvice
 * @description:
 * @author: Mokio
 * @create: 2024−12-23 21:38
 * @Version 2024 2.2 ; jdk1.8.0_181
 **/
// 全局异常处理
@ControllerAdvice
public class CommonControllerAdvice {

    // 它将捕获所有BusinessException异常，并处理
    @ExceptionHandler(BusinessException.class)
    // 返回json数据
    @ResponseBody
    // 这里是将捕获到的业务逻辑错误信息封装成Result对象，返回给前端（@responseBody）
    public Result handlerBusinessException(BusinessException exception) {
        return Result.error(exception.getCodeMsg());
    }

    // 它将捕获所有异常，并处理，并以定义好的默认错误返回
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result handlerDefaultException(Exception ex){

        // 先将错误信息输出到控制台
        ex.printStackTrace();

        // 然后在前端显示错误信息
        return Result.defaultError();
    }


}
